package com.version1.diabeco.ui.reporte;


import java.util.Calendar;
import java.util.Date;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import com.version1.diabeco.R;
import com.version1.diabeco.data.ajustes.perfilusuario.PerfilUsuarioDaoImpl;
import com.version1.diabeco.data.glucosa.GlucosaDaoImpl;
import com.version1.diabeco.model.ajustes.perfilusuario.PerfilUsuario;
import com.version1.diabeco.model.glucosa.Glucosa;
import com.version1.diabeco.ui.glucosa.ActivityListaRegistrosGlucosa;
import com.version1.diabeco.ui.glucosa.ActivityRegistroGlucosa;
import com.version1.diabeco.ui.glucosa.GlucosaAdapter;



public class ActivityListaRegistrosReporte extends Activity {

	public static final String INTENT_VALUE_DIA_DESDE = "diaDesde";
	public static final String INTENT_VALUE_MES_DESDE = "mesDesde";
	public static final String INTENT_VALUE_ANIO_DESDE = "anioDesde";

	public static final String INTENT_VALUE_DIA_HASTA = "diaHasta";
	public static final String INTENT_VALUE_MES_HASTA = "mesHasta";
	public static final String INTENT_VALUE_ANIO_HASTA = "anioHasta";
	
	public static final String INTENT_VALUE_OBSERVACIONES = "observaciones";
	// 0 -  <item>Todas</item>
    // 1 -  <item>Enfermedad</item>
    // 2 -  <item>Stress</item>
    // 3 -  <item>De Vacaciones</item>
    // 4 -  <item>Sin Observaciones</item>
	
	
	public static final String INTENT_VALUE_RANGO = "rango";
	//0 - Entre min y max
	//1 - min a rango
	//2 - max a rango
	//3 - All
	
	//public static final String INTENT_VALUE_PESO = "peso";
	//0 - max
	//1 - min
	//2 - todas
	
	
	public static final String INTENT_VALUE_GLUCOSA = "Glucosa";
	private List<Glucosa> glucosa;
	private ListView lista;
	PerfilUsuario objPerfilUsuario;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_lista_registros_reporte);
		Bundle extras = getIntent().getExtras(); 
		int diaDesde;
	    int mesDesde;
		int anioDesde;
		int diaHasta;
		int mesHasta;
		int anioHasta;
		long rango = 3;
		long observaciones = 0;
		
		Calendar calendarDesde = Calendar.getInstance();
		Calendar calendarHasta = Calendar.getInstance();
		if(extras !=null) {
		    diaDesde = extras.getInt(INTENT_VALUE_DIA_DESDE);
		    mesDesde = extras.getInt(INTENT_VALUE_MES_DESDE);
		    anioDesde = extras.getInt(INTENT_VALUE_ANIO_DESDE);
			calendarDesde.set(anioDesde, mesDesde-1, diaDesde);
		    
		    diaHasta = extras.getInt(INTENT_VALUE_DIA_HASTA);
		    mesHasta = extras.getInt(INTENT_VALUE_MES_HASTA);
		    anioHasta = extras.getInt(INTENT_VALUE_ANIO_HASTA);
		    calendarHasta.set(anioHasta, mesHasta-1, diaHasta);
		    
		    rango = extras.getLong(INTENT_VALUE_RANGO);
		    observaciones = extras.getLong (INTENT_VALUE_OBSERVACIONES);
		    //peso = extras.getLong (INTENT_VALUE_PESO);
		    
		} 
		
		//Elementos de la pantalla
		lista = (ListView) findViewById(R.id.listViewReporte);
		
		//Agregar parametro extra a esta funcion para pasar el long con el codigo de observaciones
		this.inicializarListaGlucosa(calendarDesde, calendarHasta, rango, observaciones);
	}


	private void inicializarListaGlucosa(Calendar fechaDesde, Calendar fechaHasta, long rango, long observaciones) {
		//this.setGlucosa(GlucosaDaoImpl.getInstance(this).selectAll());
		Float umbralBajo;
		Float umbralAlto;
		objPerfilUsuario = PerfilUsuarioDaoImpl.getInstance(this).selectUsuarioActivo();
		if (objPerfilUsuario!=null){
				umbralBajo = objPerfilUsuario.getUmbralBajo();
				umbralAlto = objPerfilUsuario.getUmbralAlto();
				if (umbralBajo==null)
					umbralBajo = Float.valueOf(70);
				if (umbralAlto==null)
					umbralAlto = Float.valueOf(110);
		}else{
			umbralBajo = Float.valueOf(70);
			umbralAlto = Float.valueOf(110);
		}
		//Agregar ese parametro observaciones en este metodo
		this.setGlucosa(GlucosaDaoImpl.getInstance(this).selectBetweenDatesAndValues(fechaDesde, fechaHasta, umbralBajo, umbralAlto, rango, observaciones
				));

		List<Glucosa> glucosa = this.getGlucosa();

		if (!glucosa.isEmpty()) {

			ArrayAdapter genericAdapter = new ReporteAdapter(this, R.layout.activity_reporte_fila, glucosa);
			
			lista.setAdapter(genericAdapter);
			}
			else
			{
				Toast.makeText(this, "No Existen Registros para Mostrar:", Toast.LENGTH_LONG).show();
			}
	
			
			
			//Click Largo para 
			lista.setOnItemLongClickListener(new OnItemLongClickListener() {
				@Override
				public boolean onItemLongClick(AdapterView<?> pariente, View view, int posicion, long id) {
	
					// Mostramos el menu contextual y ejecutamos la accion
					dialogMenuContextual(R.string.menu_contextual, R.array.lb_menu_contextual, posicion);
	
					return true;
				}
			});
		}
		
	


	@Override
	public void onResume() {
		super.onResume(); // Always call the superclass method first
		/*String fechaDesde = "" ;
		String fechaHasta = "";
		Bundle extras = getIntent().getExtras(); 
		if(extras !=null) {
		    fechaDesde = extras.getString(INTENT_VALUE_FECHA_DESDE);
		    fechaHasta = extras.getString(INTENT_VALUE_FECHA_HASTA);
		}
		
		System.out.println("FECHA DESDE RECIBIDA: " + fechaDesde);
		System.out.println("FECHA HASTA RECIBIDA: " + fechaHasta);


		this.inicializarListaGlucosa(fechaDesde, fechaHasta);
		//this.inicializarListaGlucosa();*/
	}

	
	

	
	/** PopUp para Mostrar una lista de valores **/
	public void dialogMenuContextual(int title, int list, final int pos) {

		AlertDialog popup;
		AlertDialog.Builder builder = new AlertDialog.Builder(this);

		builder.setCancelable(true);
		builder.setTitle(title);
		builder.setIcon(android.R.drawable.ic_menu_more);
		builder.setItems(list, new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int selectedItem) {

				mostrarMensajeConfirmacion(pos);
				dialog.cancel();
			}
		});

		// Cremos el PopUp y lo mostramos
		popup = builder.create();
		popup.show();
	}

	/** PopUp para Mostrar una lista de valores **/
	public void mostrarMensajeConfirmacion(final int pos) {
		
	AlertDialog popup;
	AlertDialog.Builder builder = new AlertDialog.Builder(this);
	 
    builder.setTitle(R.string.titulo_confimacion);
    builder.setMessage(R.string.pregunta_confirmacion);
    builder.setIcon(android.R.drawable.ic_dialog_alert);
    
    	//Boton Aceptar
    	builder.setPositiveButton(R.string.btn_aceptar, new DialogInterface.OnClickListener() {

    		public void onClick(DialogInterface dialog, int position) {
//    	    	String strFecha = null, 
//    	    		   strHora = null;	
    	    	
//    	    	ListView listView = ((AlertDialog)dialog).getListView();
//            	ArrayAdapter<Medicacion> arrayAdapter = (ArrayAdapter<Medicacion>) listView.getAdapter();
//            	Medicacion medicacion = arrayAdapter.getItem(position);

    			ListView listView = (ListView) findViewById(R.id.listViewGlucosa);
    			Glucosa glucosa = (Glucosa) (listView.getItemAtPosition(pos));            	
    			ArrayAdapter<Glucosa> arrayAdapter = (ArrayAdapter<Glucosa>) listView.getAdapter();
    			
    	    	GlucosaDaoImpl.getInstance(ActivityListaRegistrosReporte.this).deleteById(glucosa.getId());
            	getGlucosa().remove(glucosa);
            	
            	arrayAdapter.notifyDataSetChanged();

    			Toast.makeText(ActivityListaRegistrosReporte.this, "Glucosa Borrado", Toast.LENGTH_SHORT).show();

    	        dialog.cancel();
    	    	}
        	});

    	//Boton Cancelar    
	    builder.setNegativeButton(R.string.btn_cancelar, new DialogInterface.OnClickListener() {
	    public void onClick(DialogInterface dialog, int which) {
		        dialog.cancel();
	    }
	    });
 
    //Cremos el PopUp y lo mostramos
	popup = builder.create();
	popup.show();		
	}


	
	public List<Glucosa> getGlucosa() {
		return glucosa;
	}

	public void setGlucosa(List<Glucosa> glucosa) {
		this.glucosa = glucosa;
	}


//	@Override
//	public boolean onCreateOptionsMenu(Menu menu) {
//		// Inflate the menu; this adds items to the action bar if it is present.
//		getMenuInflater().inflate(R.menu.activity_peso, menu);
//		return true;
//	}

	


}
